package com.hupu.dao;

import com.hupu.pojo.User;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;

import java.util.List;

@Component
public class UserDao {
    @Autowired
    private RestTemplate restTemplate;

    //eureka客户端,可以获得服务的实例信息.
    @Autowired
    private DiscoveryClient discoveryClient;

    public User queryUserById(Long id) {
//        //根据服务名称获取提供服务的实例,服务是可以集群的,得到了服务提供者的信息,当你不知道怎么写的时候可以使用断点进行跟踪
//        List<ServiceInstance> instances = discoveryClient.getInstances("user-service");
//
//        //目前只有一个
//        ServiceInstance serviceInstance = instances.get(0);
//        //获取服务的主机地址
//        String host = serviceInstance.getHost();
//        //获取服务的端口号
//        int port = serviceInstance.getPort();
//        //url硬编码,需要改进
//        //String url = "http://localhost:8081/user/" + id;
//        //端口号和主机地址已经不是硬编码了(这里是消费者访问了服务的提供者)
//        String url = "http://"+host+":"+port+"/user/" + id;


        //此前都是使用的discoveryClient获取,开启负载均衡以后,可以使用restTemplate直接请求,因为有了ribbon
        String url = "http://user-service/user/"+id;
        User user = restTemplate.getForObject(url, User.class);
        return user;
    }
}
